package com.xinqi.common.base.enums;

import java.util.Objects;

/**
 * 基础枚举依赖
 * <p>已过时，请使用 {@link BaseEnum} 替换！</p>
 *
 * @author linkai
 * @date 2019/08/17
 */
public interface BasicEnum {

    /**
     * 根据code 获取 枚举
     *
     * @param c    枚举class
     * @param code code
     * @param <T>  枚举
     * @return 枚举
     */
    static <T extends Enum> T of(Class<T> c, Integer code) {
        if (code == null) {
            return null;
        }
        for (T e : c.getEnumConstants()) {
            if (e instanceof BasicEnum) {
                BasicEnum o = (BasicEnum) e;
                if (Objects.equals(o.getCode(), code)) {
                    return e;
                }
            }
        }
        return null;
    }

    /**
     * 给前端用的编码
     */
    default String getFrontCode() {
        return getClass().getSimpleName();
    }

    /**
     * 获取code
     *
     * @return code
     */
    int getCode();

    /**
     * 获取描述
     *
     * @return 描述
     */
    String getDescribe();

}
